package it.pecuswap.backend.services;

import it.pecuswap.backend.business.RegistrazioneBusiness;
import it.pecuswap.backend.exceptions.EntityHomeException;
import it.pecuswap.commons.client.rest.interfaces.RegistrazioneServiceInterface;
import it.pecuswap.commons.client.rest.parameters.CompleteRegistrationParameter;
import it.pecuswap.commons.dto.UtentiDTO;
import it.pecuswap.commons.exceptions.PecuswapRestException;

import javax.ws.rs.Path;
import javax.ws.rs.QueryParam;

import org.apache.log4j.Logger;

/**
 * Implementazione dei servizi relativi alla registrazione utente. Rest entry point
 * @author Ruggiero
 *
 */
@Path("/")
public class RegistrazioneService implements RegistrazioneServiceInterface{
	
	private static final Logger LOGGER = Logger.getLogger(RegistrazioneService.class);
	
	private RegistrazioneBusiness registrazioneBusiness;
	
	public RegistrazioneService(){
		this.registrazioneBusiness = new RegistrazioneBusiness();
	}

	@Override
	public boolean existUsername(@QueryParam("username")String userName) throws PecuswapRestException {
		try {
			return registrazioneBusiness.existUsername(userName);
		} catch (EntityHomeException e) {
			throw new PecuswapRestException();
		}
    }

	@Override
	public long registerUser(UtentiDTO utenteDTO) throws PecuswapRestException {
		try {
			return registrazioneBusiness.registerUser(utenteDTO);
		} catch (EntityHomeException e) {
			throw new PecuswapRestException();
		}
	}

	@Override
	public void completeRegistration(CompleteRegistrationParameter param) 
			throws PecuswapRestException {
		try {
			registrazioneBusiness.completeRegistration(param);
		} catch (EntityHomeException e) {
			throw new PecuswapRestException();
		}
	}
	

}